var uid = 0; // 记录
/** 发布订阅模式-用数组存储自己的订阅者 */
export default class Dep {
    constructor() {
        // console.log('我是dep类构造器');
        this.id = uid++;
        // 用数组存储自己的订阅者
        // 这个数组实际上存储的就是watcher实例
        this.subs = [];
    }

    /** 添加订阅 */
    addSub(sub) {
        this.subs.push(sub)
    }

    /** 添加依赖 */
    depend() {
        // Dep.target 就是一个我们自己指定的全局的位置，你用window.target也行，只要是全局唯一，没有歧义就行
        if (Dep.target) {
            this.addSub(Dep.target)
        }
    }

    /** 通知更新 */
    notify() {
        // console.log('我是notify');
        // 浅克隆一份
        const subs = this.subs.slice();
        // 遍历
        for (let i = 0; i < subs.length; i++) {
            subs[i].update()
        }
    }
}